Descriptions
There is no desription for trigger NEW_TRIGGER
 
Definition
CREATE TRIGGER NEW_TRIGGER FOR PRODUCTOS ACTIVE
BEFORE INSERT POSITION 0
AS
declare variable PADRE CHAR(13);
declare variable HIJO integer;
declare variable TAM INTEGER;
declare variable HIJOMAXIMO CHAR(13);
BEGIN
/* Trigger body */
if (NEW.id_productos IS NULL) then
BEGIN
if (new.id_padre_producto IS NULL) then
BEGIN
NEW.id_padre_producto = 'PADRE';
SELECT COUNT (ID_PRODUCTOS) FROM PRODUCTOS
WHERE
ID_PADRE_PRODUCTO = NEW.id_padre_producto
INTO:HIJO;
if (HIJO<10) then
BEGIN
NEW.ID_PRODUCTOS = HIJO ;
NEW.hijos= 0;
END
else
exception exception_padrenoexiste;
END
ELSE
BEGIN
SELECT ID_PRODUCTOS FROM PRODUCTOS
WHERE
ID_PRODUCTOS = RTRIM(NEW.id_padre_producto)
INTO:PADRE;
SELECT (HIJOS) FROM PRODUCTOS
WHERE
ID_PRODUCTOS = NEW.id_padre_producto
INTO:HIJO;
TAM = STRLEN(RTRIM(NEW.id_padre_producto));
if (PADRE IS NULL) then
BEGIN
EXCEPTION exception_padrenoexiste;
END
ELSE
begin
SELECT max(ID_PRODUCTOS) FROM PRODUCTOS
WHERE
ID_PADRE_PRODUCTO = NEW.id_padre_producto
INTO: HIJOMAXIMO;
/*EVALUACION DEL NIVEL 1 */
if (STRLEN(RTRIM(NEW.id_padre_producto))=1) then
BEGIN
IF(HIJOMAXIMO IS NULL) THEN
HIJO=0;
ELSE
BEGIN
SELECT SUBSTR(RTRIM(ID_PRODUCTOS),2,3) FROM PRODUCTOS WHERE
ID_PRODUCTOS=RTRIM(:HIJOMAXIMO)
INTO: HIJO;
if (RTRIM(HIJO)='00') then
HIJO = 0;
ELSE
HIJO=HIJO+1;
END
IF (HIJO <10) THEN
NEW.ID_PRODUCTOS = RTRIM(PADRE)||'0' || HIJO ;
ELSE
if (HIJO <100) then
BEGIN
NEW.ID_PRODUCTOS = RTRIM(PADRE)|| HIJO;
END
ELSE
EXCEPTION EXCEPTION_OVER;
END
/*EVALUACION NIVEL 2*/
if (TAM = 3 ) then
BEGIN
SELECT SUBSTR(RTRIM(ID_PRODUCTOS),4,5) FROM PRODUCTOS WHERE
ID_PRODUCTOS=RTRIM(:HIJOMAXIMO)
INTO: HIJO;
if (HIJO IS NULL) then
HIJO =0;
ELSE
HIJO =HIJO+1;
IF (HIJO <10) THEN
NEW.ID_PRODUCTOS = RTRIM(PADRE)||'0' || HIJO ;
ELSE
if (HIJO <100) then
BEGIN
NEW.ID_PRODUCTOS = RTRIM(PADRE )|| HIJO;
END
ELSE
EXCEPTION EXCEPTION_OVER;
/* IF (HIJO <10) THEN
BEGIN
HIJO=:HIJO +1 ;
NEW.ID_PRODUCTOS = RTRIM(PADRE)||'0' || HIJO ;
END
ELSE
BEGIN
NEW.ID_PRODUCTOS = RTRIM(PADRE)|| HIJO;
END*/
END
if (TAM = 5 ) then
BEGIN
IF (HIJO <10) THEN
BEGIN
HIJO=:HIJO +1 ;
NEW.ID_PRODUCTOS = RTRIM(PADRE)||'0' || HIJO ;
END
ELSE
if (HIJO <100) then
BEGIN
NEW.ID_PRODUCTOS = RTRIM(PADRE )|| HIJO;
END
ELSE
EXCEPTION EXCEPTION_OVER;
END
if (TAM = 7 ) then
BEGIN
IF (HIJO <10) THEN
BEGIN
HIJO=:HIJO +1 ;
NEW.ID_PRODUCTOS = RTRIM(PADRE)||'0' || HIJO ;
END
ELSE
BEGIN
NEW.ID_PRODUCTOS = RTRIM(PADRE )|| HIJO;
END
END
if (TAM = 9 ) then
BEGIN
IF (HIJO <10) THEN
BEGIN
HIJO=:HIJO +1 ;
NEW.ID_PRODUCTOS = RTRIM(PADRE)||'0' || HIJO ;
END
ELSE
BEGIN
NEW.ID_PRODUCTOS = RTRIM(PADRE )|| HIJO;
END
END
if (TAM = 11 ) then
BEGIN
IF (HIJO <10) THEN
BEGIN
HIJO=:HIJO +1 ;
NEW.ID_PRODUCTOS = RTRIM(PADRE)||'0' || HIJO ;
END
ELSE
BEGIN
NEW.ID_PRODUCTOS = RTRIM(PADRE )|| HIJO;
END
END
NEW.hijos= 0;
END
END
END
END
| This file was generated with EMS InterBase/FireBird Manager (www.ibmanager.com) at 09/06/2005 05:52 p.m. |
|